var until = {
	auto: null,
	/**
	 * 返还指定闭合区间内的一个随机数
	 * @param {Object} min 闭合区间开始
	 * @param {Object} max 闭合区间结束
	 * @return {type} 闭合区间内的一个随机数
	 */
	getRandom: function(min, max) {
		var math = 0;
		if (min <= max) {
			math = Math.floor(Math.random() * (max - min + 1) + min);
		} else {
			math = Math.floor(Math.random() * (min - max + 1) + max);
		}
		return math;
	},

	/**
	 * 返回指定闭合区间内的指定个数的不重复的随机数数组
	 * @param {Object} min 闭合区间开始
	 * @param {Object} max 闭合区间结束
	 * @param {Object} num 生成随机数的个数
	 * @return {type} maths 指定个数的不重复的随机数数组
	 */
	getRandoms: function(min, max, num) {
		var maths = [];
		var state = true;
		var len = Math.abs(max - min) + 1
		if (len >= num) {
			while (state) {
				if (maths.length < num) {
					var tem = myTool.getRandom(min, max);
					if (maths.indexOf(tem) == -1) {
						maths.push(tem);
					}
				} else {
					state = false;
				}
			}
		}
		return maths;
	},
	
	/**
	 * 返回指定闭合区间内的指定个数的不重复的排序的随机数数组
	 * @param {Object} min 闭合区间开始
	 * @param {Object} max 闭合区间结束
	 * @param {Object} num 生成随机数的个数
	 * @param {Object} sort 升序 "asc" 降序"desc"
	 * @return {type} maths 指定个数的不重复的随机数数组
	 */
	getRandomSort: function(min, max, num,sort) {
		var maths = [];
		var state = true;
		var len = Math.abs(max - min) + 1
		if(sort == undefined || min== undefined || max== undefined ||num== undefined){
		}else{
			if (len >= num) {
				while (state) {
					if (maths.length < num) {
						var tem = myTool.getRandom(min, max);
						if (maths.indexOf(tem) == -1) {
							maths.push(tem);
						}
					} else {
						state = false;
					}
				}
			}
			if (sort == "asc") {
				function ascFn(a, b) { //定义排序方法
					return a - b; //升序排序
				}
			}else if (sort == "desc") {
				function ascFn(a, b) { //定义排序方法
					return b - a; //降序排序
				}
			}
			maths = maths.sort(ascFn);
		}
		
		return maths;
	},

	/**
	 * 生成指定格式的日期字符串
	 * @param {Object} y 指定日期格式:yyyy-MM-dd hh:mm:ss
	 * @return {type} tel 指定格式的日期字符串
	 */
	dateStr: function(y) {
		var x = new Date();
		var z = {
			y: x.getFullYear(),
			M: x.getMonth() + 1,
			d: x.getDate(),
			h: x.getHours(),
			m: x.getMinutes(),
			s: x.getSeconds()
		};
		var ret = y.replace(/(y+|M+|d+|h+|m+|s+)/g, function(v) {
			return ((v.length > 1 ? "0" : "") + eval('z.' + v.slice(-1))).slice(-(v.length > 2 ? v.length : 2))
		});
		return ret;
	},

	/**
	 * 将一个数格式化成指定位数的字符串，数字前面用0代替位置。
	 * @param {Object} num 要格式化的数字
	 * @param {Object} digit 要格式化的位数
	 * @return {type} newNum 返回一个新的字符串
	 */
	getAppNum: function(num, digit) {
		var newNum = "";
		var zero = "";
		var number = "" + num;
		if (digit >= number.length) {
			for (var i = 0; i < digit - number.length; i++) {
				zero = "0" + zero;
			}
			newNum = zero + number;
		}
		return newNum;
	},

	/**
	 * 创建cookie
	 * @param {Object} key 键名
	 * @param {Object} value 值
	 * @param {Object} expirationTime 过期时间(yyyy-MM-dd hh:mm:ss)
	 */
	setCookie: function(key, value, expirationTime) {
		document.cookie = key + "=" + value + "; expires=" + expirationTime;
	},

	/**
	 * 通过键名获取cookie中的的值
	 * @param {Object} key 要获取的cookie值的键名
	 * @return {type} rel cookie键的值
	 */
	getCookie: function(key) {
		//初始化返回值
		var rel = "";
		if (key)
			//获取当前的cookie
			var string = document.cookie;
		//将cookie分割成键值对形式的数组
		var keys = string.split("; ");

		//遍历键值对数组
		for (var i = 0; i < keys.length; i++) {
			//通过等号分割键值对，判断等号前面的键名是否等于输入的键名
			if (keys[i].split("=")[0] == key) {
				//返回相应键名的值
				rel = keys[i].split("=")[1];
			}
		}
		return rel;
	},

	/**
	 * 删除cookie
	 * @param {Object} key 键名
	 * @param {Object} expirationTime 过期时间(创建时间的前一天)
	 */
	removeCookie: function(key) {
		var time = new Date()
		document.cookie = key + "= ;expires=" + time.setDate(time.getDate() - 1);
	},

	/**
	 * 通过键名截取地址栏中参数的值
	 * @param {Object} url 要截取的地址
	 * @param {Object} parameter 需要返回参数值的名称
	 * @return {type} rel 返回传入的参数名的值，"?"后面没有参数，则直接返回空
	 */
	getUrlVal: function(url, parameter) {
		var loc = url.slice(url.indexOf("?") + 1); //先把 "?" 之后的字符串截取出来
		var rel = ""; //初始化返回值为空
		if (loc != "") { //如果 "?" 后面没有参数，则直接返回空
			var arr = loc.split("&"); //根据 "&" 符，对字符串分割成 一个数组arr，把 “键=值”分开出来
			//遍历数组arr
			for (var i = 0; i < arr.length; i++) {
				//判断 数组中的每个元素，判断该元素中是否有传入的键名
				if (arr[i].split("=")[0] == parameter) {
					rel = arr[i].split("=")[1]; //获取 = 号 后面的值
				}
			}
		}
		return rel; //返回传入键的值
	},
	
	/**
	 * 空对象作为中介完成继承
	 * @param {Object} Child 子对象
	 * @param {Object} Parent 父对象
	 */
	extend: function(Child, Parent) {
		var F = function() {};
		F.prototype = Parent.prototype;
		Child.prototype = new F();
		Child.prototype.constructor = Child;
	},
	
	/**
	 * ajax简单封装
	 * @param {Object} method 请求方式
	 * @param {Object} url 请求地址
	 * @param {Object} callback 数据处理方法
	 */
	ajax: function(method, url, callback) { //callback：处理返回数据的具体函数
		//创建ajax对象
		if (window.XMLHttpRequest) {
			var oAjax = new XMLHttpRequest(); //IE6以上或其他浏览器
		} else {
			var oAjax = new ActiveXObject("Microsoft.XMLHTTP"); //IE6以下
		}
		//连接服务器 oAjax实例
		oAjax.open(method, url, true);
		//发送请求
		oAjax.send();
		//接收处理返回数据
		oAjax.onreadystatechange = function() {
			if (oAjax.readyState == 4) {
				callback(JSON.parse(oAjax.responseText)); //处理函数
			}
		}
	}

}
